// 原生 ajax 写法
function ajaxNative() {
    // 1. 新建实例
    const xhr = new XMLHttpRequest()
    // 2. 初始化请求
    xhr.open('get', 'http://127.0.0.1:3000/category')
    // 3. 监听请求状态的
    xhr.onload = function () {
        // onload 就相当于 onreadystatechange statusCode == 200 && this.readyState == 4
        var res = JSON.parse(xhr.responseText)
        console.log(res)
    }
    // 4. 发送请求
    xhr.send()
}

const $ = {
    ajax: function(options) {
        const {url, success} = options
        const baseURL = 'http://127.0.0.1:3000'

        const xhr = new XMLHttpRequest()
        xhr.open('get', baseURL + url)
        xhr.onload = function () {
            var res = JSON.parse(xhr.responseText)
            success(res)
        }
        xhr.send()
    }
}

const axios = function(options) {
    const baseURL = 'http://127.0.0.1:3000'
    const {url} = options

    // 1. 创建并返回 Promise 对象
    return new Promise((resolve, reject)=>{
        // 4. 如果出错, 这个函数的第二个参数,
        // 可以用来处理错误
        
        if (!url) {
            reject('请先传入 url')
        }
        // 2. 在这个创建对象的构造函数里面传入一个函数组委参数, 
        // 把要做的事情放在里面
        const xhr = new XMLHttpRequest()
        xhr.open('get', baseURL + url)
        xhr.onload = function () {
            var res = JSON.parse(xhr.responseText)
            // 3. 在这个函数里面可以接受两个参数
            // 其中第一个就是默认的回调函数, 也就是对应 .then
            resolve(res)
        }
        xhr.send()
    });
}